﻿#define  _CRT_SECURE_NO_WARNINGS 1
//第一题
//https://www.nowcoder.com/questionTerminal/2d3f6ddd82da445d804c95db22dcc471?orderByHotValue=1&page=1&onlyReference=false
//#include <iostream>
//#include <vector>
//using namespace std;
//
//int main() {
//    int n = 0;
//    cin >> n;
//    vector<int> v;
//    v.resize(n+1);
//    v[n] = 0;
//
//    for (int i = 0; i < n; i++) {
//        cin >> v[i];
//    }
//    
//    int i = 0;
//    int count = 0;
//
//    while (i<n)
//    {
//        if (v[i] < v[i + 1])
//        {
//            while (i<n&&v[i]<=v[i+1])
//            {
//                ++i;
//            }
//            ++count;
//            ++i;
//        }
//        else if (v[i]==v[i+1])
//        {
//            ++i;
//        }
//        else
//        {
//            while (i<n && v[i] >= v[i + 1])
//            {
//                ++i;
//            }
//            ++count;
//            ++i;
//        }
//    }
//    cout << count << endl;
//    return 0;
//}
//第二题
//https://www.nowcoder.com/practice/ee5de2e7c45a46a090c1ced2fdc62355?tpId=85&&tqId=29867&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking
#include <iostream>
#include <stack>
using namespace std;
#include<string>

int main() {
    string s;
    getline(cin, s);
    stack<string> s1;
    string word;
    for (char c : s)
    {
        if (c != ' ') {
            word += c;
        }
        else
        {
            s1.push(word);
            word.clear();
        }
    }
    s1.push(word);
    while (!s1.empty()) {
        cout << s1.top();
        cout << " ";
        s1.pop();
    }
    return 0;
}